package club.gskj.gulimall.shoppingcart.service;


import club.gskj.gulimall.shoppingcart.vo.CartItemVo;
import club.gskj.gulimall.shoppingcart.vo.CartVo;

import java.util.List;
import java.util.concurrent.ExecutionException;

public interface ICartService {

    /**
     * 将商品添加到购物车
     *
     * @param skuId 商品id
     * @param num   数量
     */
    CartItemVo addToCart(Long skuId, Integer num) throws ExecutionException, InterruptedException;

    /**
     * 获取购物车中 某个购物项
     *
     * @param skuId 商品id
     */
    CartItemVo getCartItem(Long skuId);

    /**
     * 获取用户的购物车信息
     *
     * @return
     */
    CartVo getCart() throws ExecutionException, InterruptedException;

    /**
     * 根据可以清空购物车信息
     */
    void clearCartData(String key);

    /***
     *  根据商品 id 设置选中状态
     * @param skuId
     * @param check 1选中 0 不选中
     */
    void checkItem(Long skuId, Integer check);

    /***
     *  根据商品id 设置商品数量
     * @param skuId
     * @param num
     */
    void countItem(Long skuId, Integer num);

    /**
     * 根据商品id 删除在购物车中对应的购物项信息
     *
     * @param skuId
     */
    void removeItem(Long skuId);

    /***
     *  获取当前登陆用户的购物项信息
     * @return
     */
    List<CartItemVo> getUserCartItems();

}
